package com.sright.bcard.enterprise.share.service;

import com.sright.bcard.common.service.share.dto.enterprise.AllEnterpriseDTO;
import com.sright.bcard.common.service.share.dto.page.BetweenDateParamRequest;
import com.sright.bcard.common.service.share.dto.page.PageParamRequest;
import com.sright.bcard.common.service.share.dto.pager.Pager;
import com.sright.bcard.common.service.share.dto.LoginUser;
import com.sright.bcard.common.service.share.dto.enterprise.EnterpriseDTO;
import com.sright.bcard.common.service.share.dto.enterprise.EnterpriseMemberDTO;
import com.sright.bcard.common.service.share.dto.request.CreateAccountParam;
import com.sright.bcard.enterprise.share.request.UpdateEnterpriseParam;
import com.sright.common.response.SrightResponse;

import java.text.ParseException;
import java.util.List;

/**
 * @author peter
 * @description
 * @date 2020/6/2
 */
public interface EnterpriseService {

    /**
     * 获取企业信息DTO
     * @param:
     * @return com.sright.bcard.enterprise.biz.dto.EnterpriseDTO
     * @author jinxuebin
     * @date 2020/6/3 2:30 下午
    */
    EnterpriseDTO getEnterpriseDTO(Long enterpriseId);

    /**
     * 获取企业信息
     * @return com.sright.common.response.SrightResponse
     * @author jinxuebin
     * @date 2020/5/25 4:44 下午
     */
    SrightResponse getEnterprise(LoginUser loginUser);

    /**
     * 更新企业新消息
     * @param: UpdateEnterpriseParam
     */
    SrightResponse updateEnterpriseInfo(UpdateEnterpriseParam param);

    /**
     * 获取企业信息(个人)
     * @return
     */
    SrightResponse enterpriseInfo(Long enterpriseId);

    /**
     * 获取企业成员列表
     * @param page
     * @param pageSize
     * @param keywords
     * @param enterpriseId
     * @return
     */
    SrightResponse<Pager<EnterpriseMemberDTO>> enterpriseMember(Integer page, Integer pageSize, String keywords, Long enterpriseId);

    Boolean confirmApply(EnterpriseDTO enterpriseDTO) throws ParseException;

    Pager<AllEnterpriseDTO> searchEnterpriseByKeyword(String keyword, Integer enterPriseStatus, BetweenDateParamRequest betweenDateParamRequest, PageParamRequest request);

    List<EnterpriseDTO> getEnterpriseList();

    Boolean updateEnterprise(EnterpriseDTO dto) throws ParseException;

    void pushExpireEnterprise();

    SrightResponse onStatus(EnterpriseDTO enterpriseDTO);

    void pushEnterpriseOpen();

    void createAccount(CreateAccountParam param);
}
